/*
 * Contiene los metodos de insertar, eliminar y actualizar
 */
package labhibernate;

import Entity.AcEmpleado;
import Entity.AcPuesto;
import Hibernate_.HibernateUtil;
import java.util.Date;
import javax.swing.JOptionPane;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

/**
 *
 * @author Alma Cottom
 */
public class CURD {
    
    //Constructor
    public CURD()
    {
        
    }
    
    public void InsertEmploy(int carneEmpleado, String nombres, String apellido,
                              Date fecha, String dir, String sc, String titulo ){
                              
        
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tx = session.beginTransaction();
        
        AcEmpleado empleado = new AcEmpleado();
        empleado.setCarneEmpleado(carneEmpleado);
        empleado.setNombres(nombres);
        empleado.setApellidos(apellido);
        empleado.setDireccion(dir);
        empleado.setFechaNac(fecha);
        empleado.setEstadocivil(titulo);
        empleado.setEstadocivil(sc);
        
        session.save(empleado);
        tx.commit();
        
        
    }
    
    public void DeletEmploy(int carneEmpleado, String nombres, String apellido,
                              Date fecha, String dir, String sc, String titulo){
        try {
        
            Session session = HibernateUtil.getSessionFactory().openSession();
            Transaction tx = session.beginTransaction();
            Object empleado = session.load(AcEmpleado.class, carneEmpleado);

            session.delete(empleado);
            tx.commit();
        
             JOptionPane.showMessageDialog(null," Se ha Eliminado el registro" );
        } 
         catch (HibernateException he) {
        he.printStackTrace();
        JOptionPane.showMessageDialog(null," No se Elimino" );
    } 
        
    }      
       
         
    
    
    public void UpdateEmploy(int carneEmpleado, String nombres, String apellido,
                              Date fecha, String dir, String sc, String titulo){
        
         try {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tx = session.beginTransaction();
        
        AcEmpleado empleado = new AcEmpleado();
        empleado.setCarneEmpleado(carneEmpleado);
        empleado.setNombres(nombres);
        empleado.setApellidos(apellido);
        empleado.setDireccion(dir);
        empleado.setFechaNac(fecha);
        empleado.setEstadocivil(sc);
        empleado.setTitulo(titulo);
        session.update(empleado);
        tx.commit();
        
        JOptionPane.showMessageDialog(null," Se ha modificado correctamente" );
        } 
         catch (HibernateException he) {
        he.printStackTrace();
        JOptionPane.showMessageDialog(null," No se Modifico" );
    } 
    }
    
    
    public void InsertPuesto(String nombre, String descripcion, float sueldo ){
        
        try {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tx = session.beginTransaction();
        
        AcPuesto puesto = new AcPuesto();
        puesto.setNombrePuesto(nombre);
        puesto.setDescripcion(descripcion);
        puesto.setSueldo(sueldo);
        //puesto.setAcEmpleado(null);
        session.save(puesto);
        
        tx.commit();
        
        JOptionPane.showMessageDialog(null," Se ha Creado correctamente" );
        } 
         catch (HibernateException he) {
        he.printStackTrace();
        JOptionPane.showMessageDialog(null," No se Creo" );
    } 
        
        
        
    }
    
    public void DeletePuesto(int idPuesto){
        
        try {
        
            Session session = HibernateUtil.getSessionFactory().openSession();
            Transaction tx = session.beginTransaction();
            Object puesto = session.load(AcPuesto.class, idPuesto);

            session.delete(puesto);
            tx.commit();
        
             JOptionPane.showMessageDialog(null," Se ha Eliminado el registro" );
        } 
         catch (HibernateException he) {
        he.printStackTrace();
        JOptionPane.showMessageDialog(null," No se Elimino" );
    } 
        
    }      
        
    
    
    public void UpdatePuesto(String nombre, String descripcion, float sueldo ){
        
        try {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tx = session.beginTransaction();
        
        AcPuesto puesto = new AcPuesto();
        puesto.setNombrePuesto(nombre);
        puesto.setDescripcion(descripcion);
        puesto.setSueldo(sueldo);
        //puesto.setAcEmpleado(null);
        session.update(puesto);
        
        tx.commit();
        
        JOptionPane.showMessageDialog(null," Se ha modificado correctamente" );
        } 
         catch (HibernateException he) {
        he.printStackTrace();
        JOptionPane.showMessageDialog(null," No se Modifico" );
    } 
        
        
    }
    
    public void GetPuesto(String carne){
        
        
        
    }
    
    public String GetCompleteName(){
        
        AcEmpleado emp = new AcEmpleado();
        
        return emp.getNombres()+ " "+ emp.getApellidos();
        
    }
    
    
    
}
